#!/bin/sh

. ../support/simple_eval_tools.sh

HEADER AgentX trap sending support

SKIPIFNOT USING_AGENTX_MASTER_MODULE
SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
SKIPIFNOT NETSNMP_SECMOD_USM

#
# Begin test
#

# start the trap daemon
CONFIGTRAPD authcommunity log public
STARTTRAPD

# standard V3 configuration for initial user
. ./Sv3config
# configure the trap receiver.
CONFIGAGENT trapsink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public

# Start the agent without initializing the example mib.
if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
ORIG_AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
else
ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
fi
AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -example"
STARTAGENT

# test to see that the current agent doesn't support the example mib
CAPTURE "snmpget -On -t 3 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.1.0"

CHECK "No Such Object"

if test "$snmp_last_test_result" = 1; then
  # test the AgentX subagent by first running it...

  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
  AGENT_FLAGS="$ORIG_AGENT_FLAGS -X -I example -Dadd"
  SNMP_CONFIG_FILE="$SNMP_TMPDIR/bogus.conf"

  STARTAGENT

  # test to see that the agent now supports the example mib
  CAPTURE "snmpget -On $SNMP_FLAGS -t 5 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.1.0"

  CHECK "life the universe and everything"

  if test "$snmp_last_test_result" = 1; then

    # test to see that the agent now sends a trap from the exmaple mib
    CAPTURE "snmpset -On -r 0 -t 3 $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.2021.254.8.0 i 1"
    DELAY
    CHECKTRAPD "life the universe and everything"

  fi

  # stop the subagent
  STOPAGENT

  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
fi

# stop the master agent
STOPAGENT

# stop the trap daemon
STOPTRAPD

# all done (whew)
FINISHED
